
#include "Engine/common.h"
#include "DNF定义.h"
#include "DNF对象定义.h"

class DNF套装对象_空对象 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		空装备=TRUE;
		装备类型=套装类;
		名称=L"无套装";
	}
};

class DNF套装对象_0001 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=未知征战之录套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]==6)
		{
			当前角色对象->技能伤害提升(PC(22.8));
			当前职业对象->技能冷却减少(1,100,PC(15),主动非觉醒技能);
			当前角色对象->三速增加(PC(30));

			if (当前角色对象->套装数量记录[未知命魂之痕套装]==5 ||
				当前角色对象->套装数量记录[巡礼命魂之痕套装]==5 ||
				当前角色对象->套装数量记录[沉沙命魂之痕套装]==5)
			{
				当前角色对象->技能伤害提升(PC(1.5));
				当前角色对象->移速增加(PC(15));
			}
				

			if (当前职业对象->是辅助职业())
			{
				当前职业对象->技能等级增加(1,25,2,全部技能);
				当前角色对象->技能范围增加(PC(15));
			}
		}
	}
};

class DNF套装对象_0002 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=未知命魂之痕套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]==5)
		{
			当前角色对象->技能伤害提升(PC(19.3));
			当前职业对象->技能恢复加快(1,100,PC(30),主动非觉醒技能);

			if (当前角色对象->套装数量记录[未知征战之录套装]==6 ||
				当前角色对象->套装数量记录[巡礼征战之录套装]==6 ||
				当前角色对象->套装数量记录[沉沙征战之录套装]==6)
			{
				当前角色对象->技能伤害提升(PC(1.5));
				当前角色对象->技能范围增加(PC(10));
			}
				
			if (当前职业对象->是辅助职业())
			{
				当前角色对象->四维增加(50);
				当前角色对象->技能范围增加(PC(15));
			}
		}
	}
};

class DNF套装对象_0003 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=巡礼征战之录套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]==6)
		{
			当前角色对象->技能伤害提升(PC(22.7));
			当前职业对象->技能冷却减少(1,100,PC(10),主动非觉醒技能);
			当前角色对象->三速增加(PC(10));

			if (当前角色对象->套装数量记录[未知命魂之痕套装]==5 ||
				当前角色对象->套装数量记录[巡礼命魂之痕套装]==5 ||
				当前角色对象->套装数量记录[沉沙命魂之痕套装]==5)
			{
				当前角色对象->技能伤害提升(PC(1.5));
				当前角色对象->移速增加(PC(15));
			}

			if (当前职业对象->是辅助职业())
			{
				当前角色对象->技能伤害提升(PC(2));
				当前职业对象->技能等级增加(1,25,2,全部技能);
			}
		}
	}
};

class DNF套装对象_0004 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=巡礼命魂之痕套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]==5)
		{
			当前角色对象->技能伤害提升(PC(18.6));
			当前职业对象->技能恢复加快(1,100,PC(20),主动非觉醒技能);

			if (当前角色对象->套装数量记录[未知征战之录套装]==6 ||
				当前角色对象->套装数量记录[巡礼征战之录套装]==6 ||
				当前角色对象->套装数量记录[沉沙征战之录套装]==6)
			{
				当前角色对象->技能伤害提升(PC(1.5));
				当前角色对象->技能范围增加(PC(10));
			}

			if (当前职业对象->是辅助职业())
			{
				当前角色对象->技能伤害提升(PC(1));
				当前角色对象->四维增加(50);
			}
		}
	}
};

class DNF套装对象_0005 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=沉沙征战之录套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]==6)
		{
			当前角色对象->技能伤害提升(PC(13));
			当前职业对象->技能冷却减少(1,100,PC(35),主动非觉醒技能);
			当前角色对象->攻速增加(PC(10));	//队员效果包括自身
			当前角色对象->三速增加(PC(10));

			if (当前角色对象->套装数量记录[未知命魂之痕套装]==5 ||
				当前角色对象->套装数量记录[巡礼命魂之痕套装]==5 ||
				当前角色对象->套装数量记录[沉沙命魂之痕套装]==5)
			{
				当前角色对象->技能伤害提升(PC(1.5));
				当前角色对象->移速增加(PC(15));
			}

			if (当前职业对象->是辅助职业())
			{
				当前角色对象->技能伤害提升(PC(5));
				当前职业对象->技能等级增加(1,25,2,全部技能);
				当前角色对象->三速增加(PC(30));
				当前角色对象->技能范围增加(PC(20));
			}
		}
	}
};

class DNF套装对象_0006 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=沉沙命魂之痕套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]==5)
		{
			当前角色对象->技能伤害提升(PC(11.3));
			当前职业对象->技能恢复加快(1,100,PC(60),主动非觉醒技能);
			当前角色对象->移速增加(PC(10));

			if (当前角色对象->套装数量记录[未知征战之录套装]==6 ||
				当前角色对象->套装数量记录[巡礼征战之录套装]==6 ||
				当前角色对象->套装数量记录[沉沙征战之录套装]==6)
			{
				当前角色对象->技能伤害提升(PC(1.5));
				当前角色对象->技能范围增加(PC(10));
			}

			if (当前职业对象->是辅助职业())
			{
				当前角色对象->技能伤害提升(PC(3));
				当前角色对象->四维增加(50);
				当前角色对象->技能范围增加(PC(20));
			}
		}
	}
};

class DNF套装对象_0007 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=赤诚卫士之誓套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]>=4)
		{
			当前角色对象->攻击强化增加(PC(1038.9));
			当前角色对象->暴击增加(PC(20));
			当前角色对象->技能伤害提升(PC(7));

			当前职业对象->技能攻击力增加(50,50,PC(15),觉醒技能);
			当前职业对象->技能攻击力增加(85,85,PC(15),觉醒技能);
			当前职业对象->技能攻击力增加(100,100,PC(10),觉醒技能);
		}
		if (当前角色对象->套装数量记录[装备Id]>=8)
		{
			当前角色对象->攻击强化增加(PC(1038.9));
			当前角色对象->技能伤害提升(PC(23));
			当前职业对象->技能攻击力增加(50,50,PC(15),觉醒技能);
			当前职业对象->技能攻击力增加(85,85,PC(15),觉醒技能);
			当前职业对象->技能攻击力增加(100,100,PC(10),觉醒技能);

			if (当前职业对象->是辅助职业())
			{
				当前职业对象->技能恢复加快(1,100,PC(50),主动非觉醒技能);
				当前角色对象->攻速增加(PC(15));
				当前角色对象->移速增加(PC(15));
				当前角色对象->施放加速(PC(22.5));
			}
		}
		if (当前角色对象->套装数量记录[装备Id]>=11)
		{
			当前角色对象->攻速增加(PC(15));
			当前角色对象->施放加速(PC(22.5));

			if (当前职业对象->施放了觉醒技能())
			{
				当前角色对象->攻速增加(PC(20));
				当前角色对象->移速增加(PC(20));
				当前角色对象->施放加速(PC(30));
			}
		}
	}
};

class DNF套装对象_0008 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=崇高拯救者之路套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]>=6)
		{
			当前角色对象->攻击强化增加(PC(150));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=9)
		{
			当前职业对象->技能冷却减少(1,100,PC(10),主动非觉醒技能);
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=10)
		{
			当前角色对象->技能范围增加(PC(10));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=11)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
	}
};

class DNF套装对象_0009 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=冲锋前线之守卫套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]>=6)
		{
			当前角色对象->攻击强化增加(PC(150));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=9)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=10)
		{
			当前角色对象->技能范围增加(PC(5));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=11)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
	}
};

class DNF套装对象_0010 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=流向自由之魔力套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]>=6)
		{
			当前角色对象->攻击强化增加(PC(150));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=9)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=10)
		{
			当前角色对象->三速增加(PC(5));
			if (当前角色对象->单人挑战())	//描述里多写了一条,实测无效
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=11)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
	}
};

class DNF套装对象_0011 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=眠梦中的祈愿套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]>=6)
		{
			当前角色对象->攻击强化增加(PC(200));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=9)
		{
			当前角色对象->三速增加(PC(5));
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=10)
		{
			当前角色对象->三速增加(PC(5));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=11)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
	}
};

class DNF套装对象_0012 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=生命浇筑之力套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]>=6)
		{
			当前角色对象->攻击强化增加(PC(150));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=9)
		{
			当前职业对象->技能恢复加快(1,100,PC(5),主动非觉醒技能);
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=10)
		{
			当前角色对象->技能范围增加(PC(5));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=11)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
	}
};

class DNF套装对象_0013 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=酷烈电流套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]>=6)
		{
			当前角色对象->攻击强化增加(PC(150));
			当前角色对象->技能范围增加(PC(5));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=9)
		{
			当前角色对象->异抗增加(感电,PC(5));
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=10)
		{
			当前角色对象->三速增加(PC(5));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=11)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
	}
};

class DNF套装对象_0014 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=烈焰灼痕套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]>=6)
		{
			当前角色对象->攻击强化增加(PC(150));
			当前角色对象->技能范围增加(PC(5));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=9)
		{
			当前角色对象->异抗增加(灼伤,PC(5));
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=10)
		{
			当前角色对象->三速增加(PC(5));
			当前角色对象->技能伤害提升(PC(5));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=11)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
	}
};

class DNF套装对象_0015 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=毒瘴之渊套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]>=6)
		{
			当前角色对象->攻击强化增加(PC(150));
			当前角色对象->技能范围增加(PC(5));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=9)
		{
			当前角色对象->异抗增加(中毒,PC(5));
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=10)
		{
			当前角色对象->三速增加(PC(5));
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=11)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
	}
};

class DNF套装对象_0016 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=赤诚信念套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]>=6)
		{
			当前角色对象->攻击强化增加(PC(150));
			当前角色对象->技能范围增加(PC(5));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=9)
		{
			当前角色对象->异抗增加(出血,PC(5));
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=10)
		{
			当前角色对象->三速增加(PC(5));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
		if (当前角色对象->套装数量记录[装备Id]>=11)
		{
			当前角色对象->技能伤害提升(PC(2));
			if (当前角色对象->单人挑战())
				当前角色对象->技能伤害提升(PC(5));
		}
	}
};

class DNF套装对象_0017 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=烈炎融合套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]==5)
			当前角色对象->技能范围增加(PC(25));
		else if (当前角色对象->套装数量记录[装备Id]>=3)
			当前角色对象->技能范围增加(PC(15));
		else if (当前角色对象->套装数量记录[装备Id]>=2)
			当前角色对象->技能范围增加(PC(10));
	}
};

class DNF套装对象_0018 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=雪境融合套装;
	}

	virtual void 应用属性()
	{
		//忽略回避率
	}
};

class DNF套装对象_0019 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=流岚融合套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]==5)
			当前角色对象->移速增加(PC(15));
		else if (当前角色对象->套装数量记录[装备Id]>=3)
			当前角色对象->移速增加(PC(9));
		else if (当前角色对象->套装数量记录[装备Id]>=2)
			当前角色对象->移速增加(PC(6));
	}
};

class DNF套装对象_0020 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=雷鸣融合套装;
	}

	virtual void 应用属性()
	{
		//忽略特效伤害
	}
};

class DNF套装对象_0021 : public DNF装备对象
{
public:
	virtual void 初始化()
	{
		装备类型=套装类;
		装备Id=大地融合套装;
	}

	virtual void 应用属性()
	{
		if (当前角色对象->套装数量记录[装备Id]==5)
			当前角色对象->三速增加(PC(15));
		else if (当前角色对象->套装数量记录[装备Id]>=3)
			当前角色对象->三速增加(PC(9));
		else if (当前角色对象->套装数量记录[装备Id]>=2)
			当前角色对象->三速增加(PC(6));
	}
};



void 添加装备对象_套装()
{
	std::vector<DNF装备对象*>* 本类装备对象表=&(装备对象表[套装类]);
	int Size=本类装备对象表->size();
	本类装备对象表->push_back(new DNF套装对象_0001);
	本类装备对象表->push_back(new DNF套装对象_0002);
	本类装备对象表->push_back(new DNF套装对象_0003);
	本类装备对象表->push_back(new DNF套装对象_0004);
	本类装备对象表->push_back(new DNF套装对象_0005);
	本类装备对象表->push_back(new DNF套装对象_0006);
	本类装备对象表->push_back(new DNF套装对象_0007);
	本类装备对象表->push_back(new DNF套装对象_0008);
	本类装备对象表->push_back(new DNF套装对象_0009);
	本类装备对象表->push_back(new DNF套装对象_0010);
	本类装备对象表->push_back(new DNF套装对象_0011);
	本类装备对象表->push_back(new DNF套装对象_0012);
	本类装备对象表->push_back(new DNF套装对象_0013);
	本类装备对象表->push_back(new DNF套装对象_0014);
	本类装备对象表->push_back(new DNF套装对象_0015);
	本类装备对象表->push_back(new DNF套装对象_0016);
	本类装备对象表->push_back(new DNF套装对象_0017);
	本类装备对象表->push_back(new DNF套装对象_0018);
	本类装备对象表->push_back(new DNF套装对象_0019);
	本类装备对象表->push_back(new DNF套装对象_0020);
	本类装备对象表->push_back(new DNF套装对象_0021);
	std::vector<DNF装备对象*>::iterator it;
	for (it=本类装备对象表->begin()+Size;it!=本类装备对象表->end();it++)
	{
		if ((*it)!=NULL)
			(*it)->初始化();
	}
}